<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;

class Test extends Controller
{
    public function index()
    {
//        2.1. 快捷查询
//        $row = Db::name('user')
//            ->where('id', '<=', '5')
////            ->where('id', 5)
//            ->select();

//        $row = Db::name('user')
//            ->where('id', 'in', [1,3,5])
//            ->select();

//        $row = Db::name('user')
//            ->where('age', '>', 18)
//            ->where('name', 'like', '%王%')
//            ->select();

//        $row = Db::name('user')
//            ->where(['sex'=>'0'])
//            ->whereor(['province'=>'上海'])
//            ->select();

//        2.2. 批量查询
//        $row = Db::name('user')
//            ->where([
//                'id'=> ['between' , '10,20'],
//                'sex'=>['eq', '0']
//            ])->select();

//        $row = Db::name('user')
//            ->where('sex','eq', '0')
//            ->where('id',['between', '1,3'], ['in', [8,88,888]], 'or')
//            ->select();

//        2.3. 区间查询
//        $row = Db::name('user')
//            ->where('id', ['>', 2], ['<', 13])
//            ->select();


//        2.4. 多表查询
//            1). 手动多表
//        $row = Db::field('u.name uname, l.name lname')
//            ->table(['hc_user'=>'u', 'hc_lover'=>'l'])
//            ->where('u.id=l.user_id')
//            ->select();

//            2). JOIN
//        $row = Db::table('hc_user')->alias('u')
//            ->field(['u.name'=>'uname', 'l.name'=>'lname'])
//            ->join('hc_lover l', 'u.id=l.user_id')
////            ->join('hc_lover l', 'u.id=l.user_id', 'RIGHT')
//            ->order('uname')
//            ->select();

//            3). 视图
//        $row = Db::view('hc_user',['name'=>'uname'])
//            ->view('hc_lover', ['name'=>'lname'], 'hc_user.id = hc_lover.user_id')
//            ->select();

//        2.5. 聚合查询
//        $row = Db::table('hc_user')->avg('age');
//        $row = Db::table('hc_user')->count();

//        $row = Db::table('hc_user')
//            ->field('province, count(id) ids')
//            ->group('province')
//            ->select();

//        $row = Db::table('hc_user')
//            ->field('province, group_concat(name)')
//            ->group('province')
//            ->select();

//        2.6. 子查询
//            1.fetchSql 方式
//            // 构建子查询SQL
//            $query = Db::table('hc_user')
//                ->field(['id','name','age','sex'])
//                ->where('sex', 'eq', '0')
//                ->fetchSql(true)
//                ->select();
////            var_dump($query);
//            // 组装完整的SQL去执行
//            $row = Db::table('('.$query.') u')
//                ->where('u.age', 'gt', '18')
//                ->order('id', 'desc')
//                ->select();

//            2.buildSql 方式
            $query = Db::table('hc_user')
                ->field(['id','name','age','sex'])
                ->where('sex', 'eq', '0')
                ->buildSql();
//            echo $query;
            $row = Db::table($query . ' u')
                ->where('u.age', 'lt', '18')
                ->order('id', 'desc')
                ->select();

        var_dump($row);
    }

    public function sw()
    {
        // 自动处理事务
//        Db::transaction(function(){
//            $userdata = ['name'=>'老大','age'=>'15','sex'=>'1'];
//            $id = Db::table('user')->insertGetId($userdata);
//            var_dump($id);
//
//            $loverdata = ['name'=>'阿诗','sex'=>'1','user_id'=>$id];
//            Db::table('lover')->insert($loverdata);
//            echo '关系建立完成';
//        });


        // 手动处理事务
        // 启动事务
        Db::startTrans();
        try{
            $userdata = ['name'=>'老爹','age'=>'99','sex'=>'0'];
            $id = Db::table('user')->insertGetId($userdata);
            var_dump($id);

            $loverdata = ['name'=>'肖恩康纳','sex'=>'1','user_id'=>$id];
            Db::table('lover')->insert($loverdata);

            echo '关系建立完成';
            // 提交事务
            Db::commit();
        } catch (\Exception $e) {
            echo '关系建立失败';
            // 回滚事务
            Db::rollback();
        }

    }



}
